package com.xs.designs.strategy.factory.template_method.IIIII;

import com.xs.designs.strategy.factory.template_method.I.PaymentStrategy;

public abstract class AbstractPaymentStrategy implements PaymentStrategy {
    // 模板方法
    public final void commonPay(double amount){
        // 必须方法
        check(amount);
        // 扩展抽象方法
        pay(amount);
        // 日志记录
    }

    // 为什么声明private
    private void check(double amount) {
        if(amount==0){
            throw new IllegalArgumentException("无效参数!");
        }
    }
}
